package GUI;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * @ClassName : JTextComponmentDemo
 * @Author : LV88VL
 * @Date: 2021/3/25 17:36
 * @Description : JTextComponent类
 *                  用于接受用户的输入或者向用户展示信息，包括JTextField和JTextArea。
 *
 *                  常见方法：
 *                      public String getText()：获取文本组件中的文件内容
 *                      public void setText()：将文本组件的内容设置为指定的字符串
 *                      public void setEditable(boolean b)：设置文本域是否可以编辑
 *
 *
 *    JTextFiled：单行文本框
 *    JTextArea：多行文本框
 *              JTextArea(int rows,int columns)
 *
 *              public void append (String str)
 *
 *
 *   需求：把文本框里面的值显示在文本域中，一个简单的聊天窗体
 */
public class JTextComponentDemo extends JFrame {
    JButton sendBt;  //发送按钮
    JTextField inputFiled;  //录入聊天信息
    JTextArea chatContent;  //聊天窗口

    public JTextComponentDemo(){
        //设置布局
        this.setLayout(new BorderLayout());
        //创建一个文本框
        chatContent = new JTextArea(12,34);
        //创建一个滚动面板，将文本域作为其显示的组件
        JScrollPane showPanel= new JScrollPane(chatContent);
        //设置文本域不可编辑
        chatContent.setEnabled(false);
        //创建一个Panel面板
        JPanel inputPanel =new JPanel();
        //创建一个文本框
        inputFiled =new JTextField(20);
        //创建一个发送按钮
        sendBt= new JButton("发送");
        //为按钮添加点击事件
        sendBt.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //获取输入的文本信息
                String content = inputFiled.getText();
                //判断信息是否为空
                if(content != null&& ! content.trim().equals("")){
                    //如果不为空，将输入文本添加到聊天窗口
                    chatContent.append("本人："+content + "\n");
                }else{
                    //如果为空，显示提示
                    chatContent.append("聊天信息不能为空\n");
                }
                //将输入的文本框内容清空
                inputFiled.setText(" ");
            }
        });
        //创建一个标签
        JLabel label =new JLabel("聊天信息");
        //将标签添加到JPanel面板
        inputPanel.add(label);
        //将文本框添加到JPanel面板
        inputPanel.add(inputFiled);
        //将按钮添加到JPanel面板
        inputPanel.add(sendBt);
        //将滚动面板和JPanel面板添加到JFrame窗口
        this.add(showPanel,BorderLayout.CENTER);
        this.add(inputPanel,BorderLayout.SOUTH);
        this.setTitle("聊天窗口");
        this.setSize(400,300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
    public static void main(String[] args) {
        new JTextComponentDemo();
    }
}
